home *** CD-ROM | disk | FTP | other *** search
/ Mac Easy 2010 May / Mac Life Ubuntu.iso / casper / filesystem.squashfs / usr / src / linux-headers-2.6.28-15 / arch / sh / include / asm / irqflags_32.h < prev    next >
Encoding:
C/C++ Source or Header  |  2008-12-24  |  1.6 KB  |  100 lines

  1. #ifndef __ASM_SH_IRQFLAGS_32_H
  2. #define __ASM_SH_IRQFLAGS_32_H
  3.  
  4. static inline void raw_local_irq_enable(void)
  5. {
  6.     unsigned long __dummy0, __dummy1;
  7.  
  8.     __asm__ __volatile__ (
  9.         "stc    sr, %0\n\t"
  10.         "and    %1, %0\n\t"
  11. #ifdef CONFIG_CPU_HAS_SR_RB
  12.         "stc    r6_bank, %1\n\t"
  13.         "or    %1, %0\n\t"
  14. #endif
  15.         "ldc    %0, sr\n\t"
  16.         : "=&r" (__dummy0), "=r" (__dummy1)
  17.         : "1" (~0x000000f0)
  18.         : "memory"
  19.     );
  20. }
  21.  
  22. static inline void raw_local_irq_disable(void)
  23. {
  24.     unsigned long flags;
  25.  
  26.     __asm__ __volatile__ (
  27.         "stc    sr, %0\n\t"
  28.         "or    #0xf0, %0\n\t"
  29.         "ldc    %0, sr\n\t"
  30.         : "=&z" (flags)
  31.         : /* no inputs */
  32.         : "memory"
  33.     );
  34. }
  35.  
  36. static inline void set_bl_bit(void)
  37. {
  38.     unsigned long __dummy0, __dummy1;
  39.  
  40.     __asm__ __volatile__ (
  41.         "stc    sr, %0\n\t"
  42.         "or    %2, %0\n\t"
  43.         "and    %3, %0\n\t"
  44.         "ldc    %0, sr\n\t"
  45.         : "=&r" (__dummy0), "=r" (__dummy1)
  46.         : "r" (0x10000000), "r" (0xffffff0f)
  47.         : "memory"
  48.     );
  49. }
  50.  
  51. static inline void clear_bl_bit(void)
  52. {
  53.     unsigned long __dummy0, __dummy1;
  54.  
  55.     __asm__ __volatile__ (
  56.         "stc    sr, %0\n\t"
  57.         "and    %2, %0\n\t"
  58.         "ldc    %0, sr\n\t"
  59.         : "=&r" (__dummy0), "=r" (__dummy1)
  60.         : "1" (~0x10000000)
  61.         : "memory"
  62.     );
  63. }
  64.  
  65. static inline unsigned long __raw_local_save_flags(void)
  66. {
  67.     unsigned long flags;
  68.  
  69.     __asm__ __volatile__ (
  70.         "stc    sr, %0\n\t"
  71.         "and    #0xf0, %0\n\t"
  72.         : "=&z" (flags)
  73.         : /* no inputs */
  74.         : "memory"
  75.     );
  76.  
  77.     return flags;
  78. }
  79.  
  80. static inline unsigned long __raw_local_irq_save(void)
  81. {
  82.     unsigned long flags, __dummy;
  83.  
  84.     __asm__ __volatile__ (
  85.         "stc    sr, %1\n\t"
  86.         "mov    %1, %0\n\t"
  87.         "or    #0xf0, %0\n\t"
  88.         "ldc    %0, sr\n\t"
  89.         "mov    %1, %0\n\t"
  90.         "and    #0xf0, %0\n\t"
  91.         : "=&z" (flags), "=&r" (__dummy)
  92.         : /* no inputs */
  93.         : "memory"
  94.     );
  95.  
  96.     return flags;
  97. }
  98.  
  99. #endif /* __ASM_SH_IRQFLAGS_32_H */
  100.